local unit_attribute = require 'types.unit_attribute'
local register = unit_attribute.register

--三维处理
local function hero_attribute(hero,name,num)
    if hero.main_attribute==name then

    end
    if name=='力量' then
        hero:add('生命上限',8*num)
        hero:add('生命恢复',1*num)
    end
    if name=='敏捷' then
        hero:add('物理伤害',0.1*num)
    end
    if name=='智力' then
        hero:add('魔法伤害',0.1*num)
    end
end


--绿字属性处理
local attrs = {'攻击','护甲','魔抗','力量','敏捷','智力'}
for i,name in ipairs(attrs) do
    local base = ('基础%s'):format(name)
    local exsx = ('额外%s'):format(name)
    local rate = ('%s加成'):format(name)
    local txad = ('%s增幅'):format(name)
    

    --总属性
    register(name,{
        on_get = function(self)
            return self:get(base) + self:get(exsx)
        end,
    })

    --基础
    register(base,{
        get = function(self)
            return 0
        end,
        set = function(self,value, old_value)
            if name=='力量' or name=='敏捷' or name=='智力' then
                hero_attribute(self,name,value - old_value)
            end

            --额外变动
            self:add(exsx,0)
        end,
    })

    --额外
    register(exsx,{
        on_get = function(self,value)
            return self:get(base) * self:get(rate) / 100 + self:get(base) * self:get(txad) / 100 + value
        end,
        set = function(self,value,old_value)
            if name=='力量' or name=='敏捷' or name=='智力' then
                hero_attribute(self,name,value - old_value)
            end
        end
    })

    --加成
    register(rate,{
        set = function(self,value)
            self:add(exsx,0)
        end
    })
    
    --增幅
    register(txad,{
        set = function(self,value)
            self:add(exsx,0)
        end
    })
end


register('天赋点',0)
register('分裂攻击',0)
register('分裂范围',300)

register('暴击伤害',150)
register('法爆伤害',150)
register('多重伤害',40)

register('杀敌金币')
register('复活时间',8)
register('复活次数',6)
register('治疗效果')
register('天赋数量')
register('每秒经验')

register('全属性',{
    on_set = function(self,change)
        self:add('基础力量',change)
        self:add('基础敏捷',change)
        self:add('基础智力',change)
    end,
    on_get = function(self)
        return self:get('力量') + self:get('敏捷') + self:get('智力')
    end
})


register('全属性加成',{
    on_set = function(self,change)
        self:add('力量加成',change)
        self:add('敏捷加成',change)
        self:add('智力加成',change)
    end,
})

register('生命恢复加成',{
    on_set = function(self,change)
        self:add('生命恢复%',change)
    end,
    on_get = function(self)
        return self:get('生命恢复%')
    end
})
